/*
题目描述
用递归的方法输出Hanoi（汉诺）塔问题的解决步骤。汉诺塔问题描述如下：
古代有一个梵塔，塔内有3个座A、B、C。初始时A座上有n个盘子，盘子大小不等，大的在下，小的在上。有一个老和尚想把这n个盘子从A座移动到C座，但是每次只允许移动一个盘子，而且在移动过程中在3个座上需要始终保持大盘在下，小盘在上，在移动过程中可以使用B座。
要求使用递归的方法模拟并输出移动的步骤。

输入
一个正整数n，保证n不超过5。

输出
解决n个盘子的汉诺塔问题的步骤。
每一步一行，在这一行中输出将盘子从一个座移动至另一个的过程。例如移动A座顶部的盘子至C座，则输出A->C。
请注意行尾输出换行。
*/
// 理解可能有困难，可以自行搜索资料
// 我也亲自写了文章，详见 https://www.aoralsfout.top/article/4
#include <stdio.h>
void hanoi(int n, char src, char temp, char target)
{
    if (n == 1)
    {
        printf("从柱子 %c 上移动盘子 %d 到 柱子 %c\n", src, n, target);
        // printf("%c->%c\n",src,target);
        return;
    }
    hanoi(n - 1,src,target,temp);
    hanoi(1,src,temp,target);
    hanoi(n - 1,temp,src,target);
}

int main()
{
    int n;
    scanf("%d",&n);
    hanoi(n,'A','B','C');
}